"""
定义：type是所有类的默认元类
类本身也是对象，而元类就是创建这些类对象的类
type的使用：
可以通过type动态创建类，
type(name,bases,dict)
name:类的名称 ，bases:类的基类 ， dict:类的属性和方法（字典）

自定义元类
通过继承type，可以子定义元类，从而控制类的创建行为
"""


# 1.
# 通过type动态创建类
# MyClass = type("MyClass",(),{"x":10,"say_hello":lambda self:print("hello")})
# obj = MyClass()
# print(obj.x) # 10
# obj.say_hello() # 方法

# 2.
# 类的创建过程，当你定义一个类的时候，python实际会调用type来创建
# class MyClass:
#     x = 10
#
#
# obj = MyClass()
# print(obj.x)

# 3.
# 自定义类
# class MyMeta(type):
#     def __new__(cls, name, bases, dct):
#         print(f"Creating class {name}")
#         dct["version"] = 1.0
#         return super().__new__(cls, name, bases, dct)
#
#
# class MyClass(metaclass=MyMeta):
#     pass
#
#
# print(MyClass.version)